The present disclosure relates to a computer graphics system, and more particularly, to buffer formats and buffer compression in rendering graphics on a computer device.
Computer graphics systems, which can render 2D objects or objects from a 3D world (real or imaginary) onto a two-dimensional (2D) display screen, are currently used in a wide variety of applications. For example, 3D computer graphics can be used for real-time interactive applications, such as video games, virtual reality, scientific research, etc., as well as off-line applications, such as the creation of high resolution movies, graphic art, etc. Typically, the graphics system includes a graphics processing unit (GPU). A GPU may be implemented as a co-processor component to a central processing unit (CPU) of the computer, and may be provided in the form of an add-in card (e.g., video card), co-processor, or as functionality that is integrated directly into the motherboard of the computer or into other devices, such as a gaming device.
Typically, the GPU has a “logical graphics pipeline,” which may accept as input some representation of a 2D or 3D scene and output a bitmap that defines a 2D image for display. For example, the DIRECTX collection of application programming interfaces by MICROSOFT CORPORATION, including the DIRECT3D API, is an example of APIs that have graphic pipeline models. The graphics pipeline typically includes a number of stages to convert a group of vertices, textures, buffers, and state information into an image frame on the screen. The GPU or graphics pipeline operates with a graphics memory, which can include buffers, such an one or more index buffers that contain indices used to identify vertices in a vertex buffers, where the index and vertex information is used to render primitives. Thus, the computer device operates the graphics pipeline to convert information about 3D objects into a bit map that can be displayed, and this process requires considerable memory and processing power.
Many video games opt for 16 bit indices. However, the number of vertices may be relatively small and a good number of these bit patterns are not needed. Additionally, many video games rely heavily on hardware instancing for culling, memory efficiency, and to save on modelling cost. This trend is likely to continue in the future with richer virtual worlds containing more incidental details and longer draw distances. It is desired to make the shading procedures more efficient, however, there are a number of complexities that make such simplifications difficult. For example, the 16 bit index format of the indices in the index buffer make it difficult to pass data between different stages of the graphics pipeline.
Therefore, there is a need for improvement in index format.